package models;

import org.hibernate.annotations.Cascade;

import org.hibernate.annotations.CascadeType;

import daos.PersistentObject;

import javax.persistence.*;

import java.util.List;
import java.util.ArrayList;
import java.util.Collection;
import daos.*;
@Entity
public class Oficina extends PersistentObject {
	
	
	
	@OneToMany(fetch = FetchType.EAGER)
	@Cascade({CascadeType.ALL, CascadeType.DELETE_ORPHAN})
	@JoinColumn(name = "id_oficina")
	private List<Casilla> casillas;
	@Column(length = 50)
	private String nombre;
	
	


	public Oficina(String nombre){
		this.nombre=nombre;
		casillas=new ArrayList<Casilla>();
	}


	public String getNombre() {
		return nombre;
	}
	
	public void crearCasillaDeCorreo(String address, String nombre, String apellido, String password){
		Casilla nueva= new Casilla(address, apellido, nombre, password);
		casillas.add(nueva);
		Dao_Oficinas.getInstancia().agregarCasillaAguardar(nueva);
	}
	
	public void bajaCasillaDeCorreo(String address){
		Casilla borrada=null;
		for (Casilla casilla : casillas)
		{
			if(casilla.getAddress().equalsIgnoreCase(address)){
				borrada= casilla;
			}
		}
		if(borrada != null){
			casillas.remove(borrada);
			Dao_Oficinas.getInstancia().agregarCasillaAeliminar(borrada);
		}
	}


	public List<Casilla> getCasillas() {
		return casillas;
	}


	public boolean validarCasillaDeCorreo(String address) {
		// TODO Auto-generated method stub
		boolean ok=false;
		for (Casilla casilla : casillas)
		{
			if(casilla.getAddress().equalsIgnoreCase(address)){
				ok=true;
				break;
			}
		}
		return ok;
	}


	public void setCasillas(List<Casilla> casillas) {
		this.casillas = casillas;
	}
	
}